iconhelper: Get rid of _gtk_icon_helper_set_window()
authorBenjamin Otte <otte@redhat.com>
Tue, 8 Dec 2015 14:52:35 +0000 (15:52 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 9 Dec 2015 12:30:40 +0000 (13:30 +0100)
Instead use the window of the owner widget.

gtk/gtkcellrendererpixbuf.c
gtk/gtkentry.c
gtk/gtkiconhelper.c
gtk/gtkiconhelperprivate.h
gtk/gtkimage.c
gtk/gtkspinbutton.c

index 397e7daea0d626b229f074fccd3ca53ba68f9eaf..2f781cbbf4e30cc53bd5b043d1cd2e9be44e4e20 100644 (file)
@@ -593,8 +593,6 @@ gtk_cell_renderer_pixbuf_render (GtkCellRenderer      *cell,
   if (icon_helper == NULL)
     icon_helper = create_icon_helper (cellpixbuf, widget);
 
-  _gtk_icon_helper_set_window (icon_helper,
-                              gtk_widget_get_window (widget));
   _gtk_icon_helper_draw (icon_helper,
                          context, cr,
                          pix_rect.x, pix_rect.y);
index 139bd11014d52486bf24a9531c1d5450f4870021..83e738b71f877c58505b7b8b4d8d7ccefe42b1e2 100644 (file)
@@ -3134,10 +3134,6 @@ realize_icon_info (GtkWidget            *widget,
   gtk_widget_register_window (widget, icon_info->window);
 
   gtk_widget_queue_resize (widget);
-
-  _gtk_icon_helper_set_window (icon_info->icon_helper,
-                              gtk_widget_get_window (widget));
-
 }
 
 static void
@@ -3439,8 +3435,6 @@ gtk_entry_unrealize (GtkWidget *widget)
     {
       if ((icon_info = priv->icons[i]) != NULL)
         {
-          _gtk_icon_helper_set_window (icon_info->icon_helper, NULL);
-
           if (icon_info->window != NULL)
             {
               gtk_widget_unregister_window (widget, icon_info->window);
index 9cae307173b6464c06d7285786545885b3bc2724..ad79e2d85e25baabdac82c94e3df6d2eecdb2d27 100644 (file)
@@ -67,7 +67,6 @@ gtk_icon_helper_take_definition (GtkIconHelper      *self,
 void
 _gtk_icon_helper_clear (GtkIconHelper *self)
 {
-  g_clear_object (&self->priv->window);
   g_clear_pointer (&self->priv->rendered_surface, cairo_surface_destroy);
 
   gtk_image_definition_unref (self->priv->def);
@@ -87,17 +86,6 @@ _gtk_icon_helper_invalidate (GtkIconHelper *self)
     }
 }
 
-void
- _gtk_icon_helper_set_window (GtkIconHelper *self,
-                             GdkWindow *window)
-{
-  if (window)
-    g_object_ref (window);
-  g_clear_object (&self->priv->window);
-  self->priv->window = window;
-
-}
-
 static void
 gtk_icon_helper_finalize (GObject *object)
 {
@@ -223,30 +211,13 @@ get_surface_size (GtkIconHelper   *self,
   cairo_destroy (cr);
 }
 
-static gint
-get_scale_factor (GtkIconHelper *self,
-                 GtkStyleContext *context)
-{
-  GdkScreen *screen;
-
-  if (self->priv->window)
-    return gdk_window_get_scale_factor (self->priv->window);
-
-  screen = gtk_style_context_get_screen (context);
-
-  /* else fall back to something that is more likely to be right than
-   * just returning 1:
-   */
-  return gdk_screen_get_monitor_scale_factor (screen, 0);
-}
-
 static gboolean
 check_invalidate_surface (GtkIconHelper *self,
                          GtkStyleContext *context)
 {
   int scale;
 
-  scale = get_scale_factor (self, context);
+  scale = gtk_widget_get_scale_factor (self->priv->owner);
 
   if ((self->priv->rendered_surface != NULL) &&
       (self->priv->last_surface_scale == scale))
@@ -341,7 +312,7 @@ ensure_surface_from_pixbuf (GtkIconHelper *self,
   else
     pixbuf = g_object_ref (orig_pixbuf);
 
-  surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, scale, self->priv->window);
+  surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, scale, gtk_widget_get_window (self->priv->owner));
   icon_effect = _gtk_css_icon_effect_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_EFFECT));
   gtk_css_icon_effect_apply (icon_effect, surface);
   g_object_unref (pixbuf);
@@ -366,7 +337,7 @@ ensure_surface_for_icon_set (GtkIconHelper    *self,
                                                       scale);
   surface = gdk_cairo_surface_create_from_pixbuf (pixbuf,
                                                   scale,
-                                                  self->priv->window);
+                                                  gtk_widget_get_window (self->priv->owner));
   g_object_unref (pixbuf);
 
   return surface;
@@ -442,13 +413,13 @@ ensure_surface_for_gicon (GtkIconHelper    *self,
     {
       GtkCssIconEffect icon_effect;
 
-      surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, self->priv->window);
+      surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, gtk_widget_get_window (self->priv->owner));
       icon_effect = _gtk_css_icon_effect_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_EFFECT));
       gtk_css_icon_effect_apply (icon_effect, surface);
     }
   else
     {
-      surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, self->priv->window);
+      surface = gdk_cairo_surface_create_from_pixbuf (destination, scale, gtk_widget_get_window (self->priv->owner));
     }
   g_object_unref (destination);
 
@@ -546,7 +517,7 @@ gtk_icon_helper_ensure_surface (GtkIconHelper   *self,
   if (!check_invalidate_surface (self, context))
     return;
 
-  scale = get_scale_factor (self, context);
+  scale = gtk_widget_get_scale_factor (self->priv->owner);
 
   self->priv->rendered_surface = gtk_icon_helper_load_surface (self, context, scale);
 }
@@ -575,7 +546,7 @@ _gtk_icon_helper_get_size (GtkIconHelper *self,
 
     case GTK_IMAGE_PIXBUF:
       get_pixbuf_size (self,
-                       get_scale_factor (self, context),
+                       gtk_widget_get_scale_factor (self->priv->owner),
                        gtk_image_definition_get_pixbuf (self->priv->def),
                        gtk_image_definition_get_scale (self->priv->def),
                        &width, &height, &scale);
index a7bbcaec6dade155d0c9cad5676aca09954ef01e..df4fb6ab77d765da229c6320a7d254fc0a2c018f 100644 (file)
@@ -71,8 +71,6 @@ GtkIconHelper *_gtk_icon_helper_new (GtkWidget *owner);
 
 void _gtk_icon_helper_clear (GtkIconHelper *self);
 void _gtk_icon_helper_invalidate (GtkIconHelper *self);
-void _gtk_icon_helper_set_window (GtkIconHelper *self,
-                                 GdkWindow *window);
 
 gboolean _gtk_icon_helper_get_is_empty (GtkIconHelper *self);
 
index a24d0dfcc2a131333c10e4ed7f36d2fbf052abce..48c00dc3e503ac01ebfb751940468e170a68d491 100644 (file)
@@ -157,7 +157,6 @@ static gint gtk_image_draw                 (GtkWidget    *widget,
 static void gtk_image_size_allocate        (GtkWidget    *widget,
                                             GtkAllocation*allocation);
 static void gtk_image_unmap                (GtkWidget    *widget);
-static void gtk_image_realize              (GtkWidget    *widget);
 static void gtk_image_unrealize            (GtkWidget    *widget);
 static void gtk_image_get_preferred_width  (GtkWidget    *widget,
                                             gint         *minimum,
@@ -233,7 +232,6 @@ gtk_image_class_init (GtkImageClass *class)
   widget_class->get_preferred_height_and_baseline_for_width = gtk_image_get_preferred_height_and_baseline_for_width;
   widget_class->size_allocate = gtk_image_size_allocate;
   widget_class->unmap = gtk_image_unmap;
-  widget_class->realize = gtk_image_realize;
   widget_class->unrealize = gtk_image_unrealize;
   widget_class->style_updated = gtk_image_style_updated;
   widget_class->screen_changed = gtk_image_screen_changed;
@@ -1557,25 +1555,9 @@ gtk_image_unmap (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_image_parent_class)->unmap (widget);
 }
 
-static void
-gtk_image_realize (GtkWidget *widget)
-{
-  GtkImage *image = GTK_IMAGE (widget);
-  GtkImagePrivate *priv = image->priv;
-
-  GTK_WIDGET_CLASS (gtk_image_parent_class)->realize (widget);
-
-  _gtk_icon_helper_set_window (priv->icon_helper,
-                              gtk_widget_get_window (widget));
-}
-
 static void
 gtk_image_unrealize (GtkWidget *widget)
 {
-  GtkImage *image = GTK_IMAGE (widget);
-  GtkImagePrivate *priv = image->priv;
-
-  _gtk_icon_helper_set_window (priv->icon_helper, NULL);
   gtk_image_reset_anim_iter (GTK_IMAGE (widget));
 
   GTK_WIDGET_CLASS (gtk_image_parent_class)->unrealize (widget);
index 0bf12c6bb5fc587a9a4bd083b86a2cb93246d7d3..7b2f2984da2bcf29f713b30a8e77e24df2535798 100644 (file)
@@ -1100,7 +1100,6 @@ gtk_spin_button_panel_draw (GtkSpinButton   *spin_button,
   width = gdk_window_get_width (panel);
 
   icon_helper = _gtk_icon_helper_new (widget);
-  _gtk_icon_helper_set_window (icon_helper, panel);
   _gtk_icon_helper_set_use_fallback (icon_helper, TRUE);
 
   if (panel == priv->down_panel)